package br.unicamp.ic.inf300.arena.modelo.pessoa;

import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;

public enum TipoPessoa {

	COMPRADOR(0, "Comprador"),
	ESPECTADOR_ESTUDANTE(1, "Espectador Estudante"),
	ESPECTADOR_PROFISSIONAL(2, "Espectador Profissional"),
	ESPECTADOR_FUNCIONARIO(3, "Espectador Funcionário");

	private int sequencial;

	private String descricao;

	private static final Map<Integer, TipoPessoa> mapa = new LinkedHashMap<Integer, TipoPessoa>();

	private TipoPessoa(int sequencial, String descricao) {
		this.sequencial = sequencial;
		this.descricao = descricao;
	}

	public int getSequencial() {
		return sequencial;
	}

	public void setSequencial(int sequencial) {
		this.sequencial = sequencial;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public static TipoPessoa get(Integer sequencial) {
		return getMapa().get(sequencial);
	}

	private static final Map<Integer, TipoPessoa> getMapa() {
		if(mapa.isEmpty()) {
			for (TipoPessoa tipoPessoa : TipoPessoa.values()) {
				mapa.put(tipoPessoa.getSequencial(), tipoPessoa);
			}
		}
		return mapa;
	}

	public Collection<TipoPessoa> getTipo() {
		return getMapa().values();
	}
}